-- Lua 内部实际采用哈希表和数组分别保存键值对、普通值，所以不推荐混合使用这两种赋值方式
local color = { first = "red", "blue", third = "green", "yellow" }
print(color["first"])
print(color[1])
print(color["third"])
print(color[2])
print(color[3])

-- getn 获取长度
--[[
  取长度一元操作 #，字符串的长度是它的字节数
  对于常规数组，里面从 1 到 n 放着一些非空的值时候，如果数组有一个空洞，name #t 可能是指向任何一个是 nil 值的
  前一个位置的下标
]]--
print("----------------------")

local tblTest1 = {1, a = 2, 3}
print("test1"..table.getn(tblTest1))
-- 不要在 Lua 的 table 中使用 nil 值，如果一个元素要删除，直接 remove，不要用 nil 去代替

print("----------------------")
-- concat 操作 table, 连接成字符串，填充字符串 sep 默认是空白字符串，起始位置 i 默认为 1，结束位置j 默认是 table
-- 长度，如果 i 大于 j 范围空字符串

local a = {1, 3, 5, 'hello'}
print(table.concat( a ))
print(table.concat( a, '|' ))
print(table.concat( a, " ", 4, 2 ))
print(table.concat( a, " ", 2, 4 ))
print("----------------------")
-- 在table 的 pos 索引位置插入 value, 其他元素向后移动到空的地方，pos 默认值是表的长度加一
local b = {1, 8}
table.insert( b, 1, 3 ) -- 在表索引的位置 1 插入 3
print(b[1], b[2], b[3])

table.insert( b, 10 ) -- 在表的最后插入 10
print(b[1], b[2], b[3], b[4])

print("----------------------")
-- maxn 返回表的最大索引编号，没有索引编号，返回 0
local c = {}
c[-1] = 10
print(table.maxn(c))
c[5] = 10
print(table.maxn(c))

print("======================")
-- remove 在 table 表中删除索引为 pos 的元素，返回这个被删除的元素，后面的索引值减少 1

local d = { 1, 2, 3, 4 }
print(table.remove( d, 1 ))
print(d[1], d[2], d[3], d[4])

-- 删除最后一个元素
print(table.remove( d ))
print(d[1], d[2], d[3], d[4])
